// 用户模块
const state = {
  // 用户信息
  userInfo: null,
  // 用户令牌
  token: uni.getStorageSync("token") || "",
  // 登录状态
  isLoggedIn: !!uni.getStorageSync("token"),
};

const mutations = {
  // 设置用户信息
  SET_USER_INFO(state, userInfo) {
    state.userInfo = userInfo;
  },
  // 设置令牌
  SET_TOKEN(state, token) {
    state.token = token;
    // 存储到本地
    uni.setStorageSync("token", token);
    // 更新登录状态
    state.isLoggedIn = !!token;
  },
  // 清除用户信息
  CLEAR_USER_INFO(state) {
    state.userInfo = null;
  },
  // 清除令牌
  CLEAR_TOKEN(state) {
    state.token = "";
    // 从本地移除
    uni.removeStorageSync("token");
    // 更新登录状态
    state.isLoggedIn = false;
  },
};

const actions = {
  // 登录
  login({ commit }, { token, userInfo }) {
    // 设置令牌
    commit("SET_TOKEN", token);
    // 设置用户信息
    commit("SET_USER_INFO", userInfo);
  },
  // 登出
  logout({ commit }) {
    // 清除令牌
    commit("CLEAR_TOKEN");
    // 清除用户信息
    commit("CLEAR_USER_INFO");
  },
  // 更新用户信息
  updateUserInfo({ commit }, userInfo) {
    commit("SET_USER_INFO", userInfo);
  },
};

const getters = {
  // 获取用户信息
  userInfo: (state) => state.userInfo,
  // 获取令牌
  token: (state) => state.token,
  // 获取登录状态
  isLoggedIn: (state) => state.isLoggedIn,
};

export default {
  namespaced: true,
  state,
  mutations,
  actions,
  getters,
};
